Cloud computing and virtualization are current trends in the field of information technology that are also gaining momentum in neighboring fields such as telecommunication. A primary advantage of cloud computing is the fact that it can almost instantly provide unlimited computing, storage, or networking resources.
Large public cloud providers, such as Amazon, can provide hundreds or thousands of computers in a matter of minutes to any user in need of cloud computing resources. Computing clouds may also be private, for example, to a company. In a private cloud scenario, the cloud is operated and used by the same company, and virtual resources are only made available inside the company. By their nature, private clouds have a limited capacity and are therefore often combined with public clouds to create so-called hybrid clouds so as to jointly utilize public and private cloud resources.
Today, different computing clouds typically rely on different technologies. That is, there are little standardization efforts regarding, for example, Application Programming Interfaces (APIs), virtualization platforms (so-called hypervisors) or resource description formats (e.g., for Virtual Machines, VMs). Also, the environments offered by the clouds (e.g., with respect to networking) may differ from cloud provider to cloud provider. Major providers that offer public or private clouds are VMware with their own hypervisor, the vCloud and vSphere APIs and a proprietary format for virtual machines, Amazon with Xen as hypervisor, the EC2 and S3 APIs and their own proprietary AMI format for virtual machines, or Eucalypthus with KVM or Xen as hypervisor, the EC2 and S3 API and the proprietary EMI virtual machine format, to name only three providers.
To create cloud computing resources for a specific service, conventionally a customized virtual machine image is first defined locally for the service. This image is then uploaded (“deployed”) via the API to the computing cloud. As a next step, a new virtual machine is started (sometimes also referred to as “deployed”) in the cloud, again via the API, from that image. Afterwards, some cloud technologies, e.g., VMware, allow for a certain customization of the deployed virtual machine by executing a customization script. Similar deployment approaches are utilized for other virtual resources (e.g., for cloud storage or networking resources).
Some of the major challenges for cloud management solutions are the efficient management of the various configurations of resources that need to be maintained across different clouds and the complexity arising from hybrid clouds (e.g., in the case of different hypervisors and different hypervisor-specific managers). It is becoming increasingly apparent that the management of cloud resources and their configuration is a demanding task as, in any realistic deployment, a very broad range of resources are requested by the cloud users, and these are typically not generic “base resources” such as an “empty” operating system or an “empty” application server. Rather, in many cases various items of software still need to be deployed, and customizations have still to be made.
A typical base resource can be a virtual machine with an installed operating system. To turn it into a target resource with desired resource properties, application software needs to be installed and configured (i.e., customized). Furthermore, additional cloud resources such as networking or attached storage resources may need to be set up. As an example, the Ericsson Composition Engine (ECE) as described in J. Niemöller et al., “Ericsson Composition Engine—Next-generation IN”, Ericsson Review, 2/2009, pages 22 to 27 may need to be installed on an application server in a cloud computing system to turn the application server into the desired target resource. After the basic ECE software is installed, different so-called skeletons need to be deployed to instruct the ECE how to react to incoming signals. Also for the skeletons, many further customizations can exist, for example to adapt the ECE to the needs and environments of different customers.
The ECE example illustrates the huge amount of possible configurations of a cloud resource that need to be managed in an efficient manner to arrive at a desired target resource in the cloud computing system. Existing solutions typically address this challenge by creating a so-called resource template for each possible resource configuration (e.g., for each possible virtual machine image). Although there are first attempts to make configurations more dynamic (e.g., post-deployment scripts in VMware vCenter), these attempts still rely on many static base resources.
The amount of pre-configured resource templates that define a set of base resources can thus become enormous. Moreover, the manual management effort required to, for example, post-configure a deployed base resource to turn it into the desired target resource necessitates, for example, that all deployed images need to be updated one by one. In hybrid cloud scenarios, this effort most often has to be multiplied by the number of hypervisor types used, because the virtual machine formats and template generation mechanisms are often not compatible with each other.